package cn.iocoder.yudao.module.pickbook.service.book;

import cn.iocoder.yudao.module.pickbook.dal.dataobject.book.PickbookBookDO;
import cn.iocoder.yudao.module.pickbook.dal.dataobject.book.PickbookChapterDO;
import cn.iocoder.yudao.module.pickbook.dal.dataobject.series.PickbookSeriesDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;

import java.util.List;

/**
 * 绘本 Service 接口
 *
 * @author 芋道源码
 */
public interface PickbookBookService {

    /**
     * 获取绘本列表
     *
     * @param category 分类
     * @param ageRange 适读年龄
     * @param seriesId 系列ID
     * @param pageNo 页码
     * @param pageSize 每页大小
     * @return 绘本列表
     */
    PageResult<PickbookBookDO> getBookList(String category, String ageRange, Long seriesId, 
                                          Integer pageNo, Integer pageSize);

    /**
     * 获取绘本详情
     *
     * @param id 绘本ID
     * @return 绘本详情
     */
    PickbookBookDO getBook(Long id);

    /**
     * 获取绘本章节列表
     *
     * @param bookId 绘本ID
     * @return 章节列表
     */
    List<PickbookChapterDO> getBookChapters(Long bookId);

    /**
     * 获取章节详情
     *
     * @param id 章节ID
     * @return 章节详情
     */
    PickbookChapterDO getChapter(Long id);

    /**
     * 获取绘本系列列表
     *
     * @param category 分类
     * @param ageRange 适读年龄
     * @return 系列列表
     */
    List<PickbookSeriesDO> getSeriesList(String category, String ageRange);

    /**
     * 获取系列详情
     *
     * @param id 系列ID
     * @return 系列详情
     */
    PickbookSeriesDO getSeries(Long id);

    /**
     * 搜索绘本
     *
     * @param keyword 关键词
     * @param pageNo 页码
     * @param pageSize 每页大小
     * @return 绘本列表
     */
    PageResult<PickbookBookDO> searchBooks(String keyword, Integer pageNo, Integer pageSize);

} 